Automatic application installation and integration at an enterprise level based on a single install request

ABSTRACT

The present disclosure relates to systems, methods, and non-transitory computer readable media for automatically providing access to multiple user accounts associated with an enterprise account based on a single install request. In so doing, the disclosed systems can rapidly and automatically integrate a developer system with the enterprise account. For example, the disclosed systems can, for a requested application created by a developer system, determine application ID and authentication credential pairs unique to each user account that enable secure, independent access to the requested application for each user account. In addition, the disclosed systems can provide such access to the requested application on user devices through the associated user accounts without users having to separately login to the requested application. Further, the disclosed systems can handle access changes on an individual user account basis while maintaining cross-system synchronization.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/418,802 filed on May 21, 2019. The contents of which are herebyincorporated by reference.

BACKGROUND

Recent years have seen significant improvements in computer systems andsoftware applications for implementing solutions relevant to generatingand analyzing data of enterprises like call center enterprises. Forexample, conventional call center systems in tandem with specializedemployees collect, analyze, and export large volumes of usage data fromoperational platforms to specialized tools. Such specialized tools helpimprove business and system operations. Additionally, specialized toolscan include, for example, Workforce Management, Workforce Optimization,Quality Assurance, Advanced Reporting, and Voice Analytics. However, anumber of problems exist with conventional call center systems,particularly in relation to efficiency of operation with specializedtools.

As one example, conventional call center systems are unable to integratecollected usage data into specialized tools without specially trainedemployees who export, transform, and import data into the correct tools,or, if automated, through custom system integration projects that cantake weeks of specialized and expensive engineering efforts. In eitherscenario, conventional call center systems use large amounts of systembandwidth and processing capacity during initial integration of usagedata into specialized tools. Moreover, without specialized employeesand/or custom-created integration projects, conventional call centersystems are unable to integrate usage data into the numerous specializedtools available. In this manner, conventional call center systems canrequire excessive time and user interaction with user interfaces andsystem hardware/software. Further, in some cases, initial integration ofusage data into specialized tools even causes downtime and/or lag forconventional call center systems. Accordingly, conventional call centersystems fail to operate efficiently and independently during initialintegration of usage data into specialized tools.

In addition to inefficiency and dependency during initial integration ofusage data into specialized tools, conventional call center systems addfurther inefficiencies by requiring manual, individual softwaredownloads of the specialized tools described above at each user devicein the conventional call center system of a call center enterprise. Forinstance, a supervisor may download a Workforce Management applicationon her admin device, along with purchasing sufficient licenses of theWorkforce Management application for her team of call agents. Each callagent must then download the Workforce Management application atrespective user devices prior to any integration of usage data mentionedabove into the Workforce Management application. Delays, shift changes,system downtime, call waiting time, and/or many other factors help toexacerbate this incongruent approach. Indeed, such an onboarding processfor application deployment across an enterprise slows the initialintegration of usage data into specialized tools. Further, the slowedinitial integration can cause a conventional call center system toproduce inaccurate, partial, useless, or skewed usage data.

In another example, conventional call center systems integrated withspecialized tools often require multiple logins, for example, at leastone login for the conventional call center system and another separatelogin explicitly for the specialized tool. This multi-login processbecomes quite onerous as the number of specialized tools increases,requiring additional user interactions and time with user interfaces toenter different username and/or password information for a sameidentity. Further, conventional call center systems can experience lowerlevels of security due to password fatigue and higher strain on systembandwidth from increased work flows opened to resolve login issues thatcoincide with multi-logins for specialized tools.

These along with additional problems and issues exist with regard toconventional call center systems.

SUMMARY

Embodiments of the present disclosure provide benefits and/or solve oneor more of the foregoing or other problems in the art with systems,non-transitory computer-readable media, and methods for enterpriseapplication deployment systems. For example, in some embodiments, thedisclosed systems can use a one-click install process to integrate athird-party application (e.g., a call center as a service “CCaaS”application) with an enterprise account (e.g., an enterprise accountwithin a CCaaS system). Specifically, the disclosed systems can receivefrom a user device corresponding to a user associated with theenterprise account (e.g., an administrator user) a request to install anapplication included in an enterprise application suite. Based onreceiving the selection, the system can initiate and complete anautomated application integration process across all user accounts ofthe enterprise account, or a select subset of user accounts of theenterprise account, with minimal to no additional user interaction.Moreover, based on the automatic integration process, the systemprovides the user accounts of the enterprise account authenticatedaccess to the integrated application simply based on the user accessingthe enterprise account and without the users needing to setup or performadditional logins to the integrated application. In this manner, thedisclosed systems provide improved efficiency and enhanced userexperiences by facilitating rapid integration between the enterpriseaccount and the developer system of the application and by creating afully automated, self-service platform.

As mentioned above, embodiments of the present disclosure providebenefits and/or solve one or more of the foregoing or other problems inthe art. In particular, the disclosed systems solve several aspects ofintegration issues typical of conventional systems. For example, thedisclosed systems can efficiently and independently integratethird-party applications with an enterprise account automatically withinseconds or minutes, thereby omitting excessive time and user interactionwith user interfaces and system hardware/software, and thereby alsoavoiding downtime and/or lag. Additionally, for example, the disclosedsystems can remove steps of manual, individual software downloads ofthird-party applications by providing automatic access to approved usersthrough their enterprise user accounts. In turn, the disclosed systemscan increase security by decreasing password fatigue and can increasebandwidth by decreasing a number of open workflows for login issues.

Additional features and advantages of one or more embodiments of thepresent disclosure are outlined in the description which follows, and inpart will be obvious from the description, or may be learned by thepractice of such example embodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

This disclosure will describe one or more embodiments of the inventionwith additional specificity and detail by referencing the accompanyingfigures. The following paragraphs briefly describe those figures, inwhich:

FIG. 1 illustrates an example environment for implementing anapplication deployment system in accordance with one or moreembodiments;

FIG. 2 illustrates an example sequence flow for uploading an applicationto an enterprise application suite in accordance with one or moreembodiments;

FIGS. 3A-3B illustrate an example user interface for uploading anapplication to an enterprise application suite in accordance with one ormore embodiments;

FIGS. 4A-4B illustrate an example user interface for managing anapplication uploaded to an enterprise application suite in accordancewith one or more embodiments;

FIG. 5 illustrates an example sequence flow for integrating anapplication with multiple user accounts associated with an enterpriseaccount in accordance with one or more embodiments;

FIG. 6 illustrates an example user interface for integrating anapplication with multiple user accounts associated with an enterpriseaccount in accordance with one or more embodiments;

FIG. 7 illustrates another example user interface for integrating anapplication with multiple user accounts associated with an enterpriseaccount in accordance with one or more embodiments;

FIG. 8 illustrates another example user interface for integrating anapplication with multiple user accounts associated with an enterpriseaccount in accordance with one or more embodiments;

FIG. 9 illustrates another example user interface for integrating anapplication with multiple user accounts associated with an enterpriseaccount in accordance with one or more embodiments;

FIGS. 10A-10B illustrate an example sequence flow for responding to asubscribed event in accordance with one or more embodiments;

FIG. 11 illustrates an example sequence flow for requesting amodification to a user account associated with an enterprise account inaccordance with one or more embodiments;

FIG. 12 illustrates a schematic diagram of an enterprise applicationdeployment system in accordance with one or more embodiments;

FIG. 13 illustrates a flowchart of a series of acts for providingapplication access to multiple user accounts associated with anenterprise account in accordance with one or more embodiments;

FIG. 14 illustrates an example computing device in accordance with oneor more embodiments; and

FIG. 15 illustrates an example network environment in accordance withone or more embodiments.

DETAILED DESCRIPTION

This disclosure describes one or more embodiments of an enterpriseapplication deployment system that intelligently integrates athird-party application with multiple user accounts associated with anenterprise account based on a single install request. In particular, insome embodiments, the enterprise application deployment system(hereafter “EADS”) enables a user to pick a service or application froma marketplace (e.g., an application within an application suite), andfollow an installation user experience to easily configure applicationintegration to the multiple user accounts associated with the enterpriseaccount. Accordingly, the EADS provides enterprise account managersintuitive, efficient, and quick access to fully functional, specializedtool integrations (e.g., a workforce management solution) available andrunning across multiple user accounts.

Additionally, the EADS can integrate an application with the enterpriseaccount such that approved user accounts automatically have access tothe application via their enterprise system user accounts withoutadditional explicit logins. Moreover, the EADS can integrate theapplication with user accounts in a manner promoting secure,individualized control of application use due to data segregation andunique credentials for each access grant to the application. Further,during the same integration process, the EADS can integrate theapplication with the enterprise account to provide the applicationaccess to data reports and information from the enterprise system toallow the application to generate desired solutions.

As described in the present disclosure, the EADS is part of anenterprise system. The enterprise system, in general, can include asystem that provides SaaS. In some example embodiments described herein,the enterprise system is a CCaaS (i.e., a call center as a service)system. Accordingly, subscribers can utilize services provided by theenterprise system and, as described in the present disclosure, canutilize specialized tools (e.g., third-party developer applications)integrated with a subscriber's enterprise account via a single installrequest.

To illustrate, in some embodiments, the EADS provides an enterpriseapplication suite that includes developer uploaded applications (e.g.,enterprise applications for increasing productivity and customersatisfaction along with tools available through the enterprise account).Further, the EADS may receive from an administrator device associatedwith the enterprise account a request to install or integrate anapplication from the enterprise application suite. In response to therequest to install the application, the EADS can provide to theadministrator device a user interface that shows a list of user accountscorresponding to the enterprise account. From the selection of useraccounts received at the user interface, the EADS can associate uniquecredentials for each respective user account approved to receive accessto the application. Thereafter, the EADS can provide access to theapplication on one or more devices associated with the one or moreintegrated user accounts.

As mentioned above, the EADS may provide an enterprise application suitewith applications to an administrator device. In some embodiments, theenterprise application suite, such as the Talkdesk® AppConnect, includesa number of software applications for integrating with an enterprisesystem. For example, the enterprise application suite may includeadvanced reporting applications, agent productivity applications, dialerapplications, digital channel applications, voice analytic applications,workforce management applications, workforce optimization applications,etc. Within the various categories of enterprise applications, the EADScan provide within the enterprise application suite one or moreapplications developed by third-parties. Accordingly, the EADS mayreceive a request to integrate an application from the enterpriseapplication suite with one or more user accounts within an enterpriseaccount, and after integration, provide the one or more user accountswith access to the application via their respective user accounts on theenterprise system.

Further, after receiving a selection of one or more user accounts tohave access to the requested application, the EADS integrates theapplication with the user accounts by associating an application ID andauthentication pair with each of the selected user accounts. Theapplication ID and authentication pairs are unique credentials for eachuser account accessing the application on corresponding devices. Theapplication ID and authentication pairs that the EADS generates allowfor individualized user account access to the application. For example,the EADS may generate the application ID and authentication pairs toenable revocation of access for one user account but not other useraccounts within the enterprise account. Similarly, the EADS may generatethe application ID and authentication pairs to enable revocation ofaccess for one application associated with an entire enterprise account,but not other applications associated with the enterprise account.

After application integration, the EADS manages on-going synchronizationbetween the developer system that created the application and theenterprise account, for example, by rolling back changes that are notapproved by the developer system within a threshold sync time. Forexample, the EADS can perform access changes to the application based onrequests from the enterprise account, which may be cancelled if thedeveloper system does not approve the access changes within a timeperiod of the threshold sync time.

In more detail from a developer aspect, in some embodiments, the EADSprovides to a developer system one or more application programminginterfaces (hereafter “APIs” or “API”) compatible with the enterprisesystem. Given the provided APIs from the EADS, the developer system candevelop an application to permit communication between the enterprisesystem and the developer system. For example, the EADS may generateand/or provide APIs to the developer system that will permit thedeveloper system and/or the application to access specific data reportsor data streams associated with the enterprise account from theenterprise system. Additionally or alternatively, the EADS may generateand/or provide APIs to the developer system that will permit thedeveloper system and/or the application to deliver a data solution foruse by the enterprise account on the enterprise system.

In further detail from the developer aspect, the EADS may, in someembodiments, request the developer system to subscribe to eventsrelative to the application and/or the enterprise account. For example,during an application submission process, the EADS may send to thedeveloper system an event selection menu that includes a number ofevents that the developer system can choose for notification purposes,data generation purposes, and/or approval purposes. For instance, duringthe onboarding process of an application, the EADS may send a list ofevents to the developer system for subscription in which the listincludes, for example, metrics or categories relevant to an incomingcall received, a call-time duration, a customer satisfaction score, acall transfer, customer escalation, etc. The developer system can thenselect and subscribe to various events needed for the developerapplication to perform its function, as will be further described below.

In view of the foregoing summary and the following description, the EADSprovides many advantages and benefits over conventional systems andmethods. For example, by implementing particular user interface flowsand/or user experience design flows, along with APIs, the EADS canautomatically integrate an enterprise account with a developer systemand/or with an associated application of the developer system.Specifically, in response to a request from an administrator deviceassociated with the enterprise account to install the application, theEADS can provide to the administrator device a selection menu of a listof user accounts corresponding to the enterprise account. Further, theEADS can associate a unique credential with each of the selected useraccounts and provide access to the application on devices respectivelyassociated with the selected user accounts. Accordingly, the EADS canforego specialized employees and/or custom created integration projectswithout which conventional methods and systems are unable to integratean enterprise account with a developer system. Moreover, the EADS canreduce and/or eliminate an amount of user interactions with userinterfaces for integrating the enterprise account with the developersystem. Additionally, the EADS can increase system bandwidth andprocessing capacity for the EADS, the developer system, and/or a systemcorresponding to the enterprise account by reducing an amount of openwork flows opened to resolve login issues that coincide withmulti-logins for specialized tools and/or troubleshooting aninstallation process.

In addition to increased efficiency and independence of integrating theenterprise account, the EADS can automatically grant access to selecteduser accounts within the enterprise account based on their logins to theenterprise account and without separate logins. Specifically, byassociating unique credentials with each selected user account (e.g., anapplication ID and authentication credential pair), the EADS can foregomanual, individual software downloads of the application at each deviceassociated with a selected user account and, instead, automaticallygrant access to the application via a user account login at each deviceof the selected user accounts. Furthermore, by automatically grantingaccess using only a single sign-on protocol for both the user accountand the application, the EADS can, in turn, increase security bydecreasing password fatigue and can increase bandwidth by decreasing anumber of open workflows for login issues.

Further, the EADS is a more flexible system than conventional systems.For example, conventional systems often require complicated processesfor changing access privileges resulting in account outages and/or otherperiods of lockout for users on the enterprise account. In contrast, theEADS can easily grant or revoke access, including different levels ofaccess, to an application on an individual user basis without affectingother users tied to the enterprise account. With higher levels offlexibility and reduced downtime for one or more users in an enterpriseaccount, the EADS provides a distinct advantage over conventionalsystems.

As illustrated by the foregoing discussion, the present disclosureutilizes a variety of terms to describe features and advantages of theEADS. Additional detail is now provided regarding these and other termsused herein. For example, as used herein, the term “enterpriseapplication suite” refers to an application store or applicationmarketplace corresponding to an enterprise platform. In particular, theenterprise application suite includes a number of software applicationsfor integrating with an enterprise system. For example, the enterpriseapplication suite may include advanced reporting applications, agentproductivity applications, dialer applications, digital channelapplications, voice analytic applications, workforce managementapplications, workforce optimization applications, etc.

Further, as used herein, the term “enterprise system” refers to a systemof a SaaS provider typically used by companies that have multiple usersaccessing the SaaS. For example, the enterprise system can include acall center (i.e., a contact center). While this application discussesvarious technologies with respect to a CCaaS enterprise system, thisdisclosure is not limited to only this example. Other examples of anenterprise system could be any computing system, a networking system, ananalytics system, a deployment system, a management system, a toolssystem for the Internet of Things, a transaction management system, abusiness communication system, an expense management system, anaccounting system, a productivity enhancement system, a customerrelations management system, etc.

Further, as used herein, the term “developer system” refers to acomputer system associated with a developer of an application that isavailable on the enterprise application suite. For example, a developersystem is a system that can receive and use data from an enterprisesystem. Moreover, in some examples, the developer system can providedata and instructions to the enterprise system to cause the enterprisesystem to perform specific functions or generate reports. In the examplewhere an enterprise system is a CCaaS, examples of developer systemscould be advanced reporting systems, agent productivity systems, dialersystems, digital channel systems, voice analytic systems, workforcemanagement systems, workforce optimization systems, quality assurancesystems, etc.

Further as used herein, the term “application ID and authenticationcredential pair” refer to an identifier associated with the applicationand a credential that when paired together provide verification andauthorization. In particular, the EADS can associate a uniqueapplication ID and authentication credential pair with a specific useraccount to provide a user account of the enterprise system access to theapplication. For example, the EADS may, for a particular workforcemanagement application, associate a first user account with anapplication ID of ABC123 and an associated authentication credential ofQWERTY, and a second user account with an application ID of DEF456 andan associated credential of ASDFGH. In this case, both the first useraccount and the second user account have independent access via theenterprise system to the workforce management application via therespective application ID and authentication credential pairs.

Further, as used herein, the terms “single sign-on” or “SSO” refer to aproperty of access control or access protocols permitting access basedon a single login credential. In particular, an SSO access protocol inthe present disclosure can allow a user account access to an applicationbased on login credentials to the user account in the enterprise systemwithout separate login credentials for the application.

Further, as used herein, the terms “events” or “subscribed events” referto instances or occurrences relative to an enterprise system. Inparticular, in the example of a CCaaS, events can include incomingcalls, call transfers, call holds, or any other suitable event that adeveloper system may subscribe to such that the EADS notifies/sends datato the developer system about the subscribed event. For example, asubscribed event may include an incoming call corresponding to theenterprise account, for which the developer system uses data regardingthe subscribed incoming calls to generate call traffic reports foroptimal enterprise staffing during certain shifts. Other examples of asubscribed event can include a new enterprise account that activates aninstallation or any other suitable event with respect to an enterpriseaccount.

Further, as used herein, the term “account” refers to an arrangement inwhich a user is given personalized access to a computer, website, and/orapplication. For example, an account may include an enterprise account(e.g., a CCaaS account), a user account (e.g., an administrator account,an agent account, a supervisor account, etc. associated with anenterprise account), or any other suitable type of account.

Further, as used herein, the term “access” refers to login-entryacceptance/authorization for use of a computer, website, and/orapplication, including data related thereto. In particular, changes toaccess (e.g., access changes to access code authorizations) may occur asa result of access being granted, revoked, reinstated, etc.

Further, as used herein, the term “install” or “integrate” refers to theact of providing access. In particular, a request to install anapplication can include a request to provide access to the applicationon a user device, without necessarily including a physical installation(e.g., a download) onto hardware of the user device. For example, theuser device can, through an authorized user account, access theinstalled application residing in a cloud-based server (e.g., a networkapplication).

As referred to herein, the term “enterprise data” includes data relativeto data of the enterprise account and/or an associated enterprise. Forexample, the enterprise data may include data reports, metrics,performance information, status information, etc.

As referred to herein, the “term application programming interface” or“API” refers to computer-executable instructions, definitions,communication protocols, and/or tools for creating softwareapplications. For example, APIs may include specifications for routines,data structures, object classes, variables, and/or remote calls forintegrating an enterprise account with an application and/or anassociated developer system. In more detail, APIs can beapplication-specific, e.g., specific to a workforce managementapplication, a workforce optimization application, a quality assuranceapplication, a voice analytics application, etc.

Additional detail will now be provided regarding the EADS in relation toillustrative figures portraying example embodiments and implementationsof the EADS. For example, FIG. 1 illustrates an environment 100 forimplementing an EADS 106 in accordance with one or more embodiments. Asshown in FIG. 1, the environment 100 includes server(s) 102, a network114, a developer system 116, and a subscriber system 118. Each of thecomponents of the environment 100 can communicate via the network 114,and the network 114 may be any suitable network over which computingdevices can communicate. Example networks are discussed in more detailin relation to FIG. 15.

As mentioned, the environment 100 includes the subscriber system 118.The subscriber system 118 subscribes to one or more services provided bythe enterprise system 104 through an enterprise account 110. In these orother embodiments, the subscriber system 118 includes one or moredevices, such as user devices 120-128. The user devices 120-128 can beany one of a variety of computing devices, including a smartphone,tablet, smart television, desktop computer, laptop computer, virtualreality device, augmented reality device, or other computing device.Additionally, each of the user devices 120-128 may include,respectively, user applications 122-130. In these or other embodiments,the user applications 122-130 are applications for accessing respectiveuser accounts corresponding to the enterprise account 110. Inparticular, the user applications 122-130 may be a web application, anative application installed on the user devices 120-128 (e.g., a mobileapplication, a desktop application, etc.), or a cloud-based applicationwhere part of the functionality is performed by the server(s) 102. Theuser applications 122-130 can present or display information to a user,including a user interface for interacting with a user accountcorresponding to an enterprise account 110.

In some embodiments, as indicated by the dashed box of FIG. 1, the userdevices 120-128 are associated or affiliated with a subscriber servicessystem 132. The subscriber services system 132 may be a customer supportsystem, for example. In these embodiments, the enterprise system 104 mayprovide information such as an electronic communication and contactinguser information to the subscriber services system 132, whereupon thesubscriber services system 132 may assign or relay the electroniccommunication to a user device (e.g., the user device 120). In otherembodiments, user devices 120-128 are not directly associated with thesubscriber services system 132, and the enterprise system 104 providesinformation to the user devices 120-128 without utilizing the subscriberservices system 132.

As mentioned, the environment 100 includes the developer system 116. Thedeveloper system 116 creates applications that an EADS 106 canautomatically integrate with the enterprise accounts 110 for use by thesubscriber system 118. Additionally, the developer system 116 can uploadapplications to an enterprise application suite 108 and/or approverequested access changes to installed enterprise applications 112developed by the developer system 116. For example, in an examplescenario in which the user device 120 sends a request to the EADS 106 toremove access to one or more of the installed enterprise applications112 for the user device 124 (and/or an associated user account), thedeveloper system 116 as the developer entity may approve, disapprove, orremain undecided regarding the requested access change.

As also mentioned, the environment 100 includes the server(s) 102. Theserver(s) 102 may generate, store, receive, and transmit electronicdata, such as executable instructions, for example, to automaticallyintegrate an application with one or more enterprise accounts 110. Inone example, the server(s) 102 and/or any other system a part of orcommunicatively coupled to the server(s) 102 (e.g., the enterprisesystem 104, the EADS 106, etc.), may receive a request from thesubscriber system 118 to install or integrate an application in theenterprise application suite 108. In response to the request (e.g., froman administrator device such as the user device 120), the EADS 106 mayautomatically integrate the developer system 116 with an enterpriseaccount such that multiple users in the subscriber system 118 can accessthe application through the enterprise account 110 at the user devices120-128. Once purchased, licensed, and/or integrated, the subscribersystem 118 (including any component thereof) may access the applicationat the installed enterprise applications 112 as part of the enterpriseaccount 110 that includes storage for purchased, licensed, and/orintegrated applications.

Although FIG. 1 depicts the EADS 106 located on the server(s) 102, insome embodiments, the EADS 106 may be implemented by (e.g., locatedentirely or in part) on one or more other components of the environment100. Thus, modifications, additions, or omissions may be made to theenvironment 100 without departing from the scope of the presentdisclosure. For example, in some embodiments, the environment 100 mayinclude any number of other components that may not be explicitlyillustrated or described. Moreover, the separation of various componentsin the embodiments described herein is not meant to indicate that theseparation occurs in all embodiments. In addition, it may be understoodwith the benefit of this disclosure that the described components may beintegrated together in a single component or separated into multiplecomponents.

As an example, in some embodiments, the environment 100 may have adifferent arrangement of components and/or may have a different numberor set of components altogether than as shown in FIG. 1. For example,the user devices 120-128, the subscriber services system 132, and/or thedeveloper system 116 may communicate directly with the enterprise system104, bypassing the network 114. Additionally, the enterprise system 104can include one or more databases (e.g., a database to store contactinguser information, APIs, and/or enterprise account permissions) housed onthe server(s) 102 or elsewhere in the environment 100. The EADS 106 canbe implemented in a variety of different ways across the server(s) 102,the network 114, the user devices 120-128, the subscriber servicessystem 132, and/or the developer system 116. Additional and/oralternative relationships between components of the environment 100 aredescribed in additional detail below.

As mentioned above, the EADS 106 communicates with the developer system116 to onboard one or more applications for the enterprise applicationsuite 108. While FIG. 2 illustrates acts according to one embodiment,alternative embodiments may omit, add to, reorder, and/or modify any ofthe acts shown in FIG. 2. The acts of FIG. 2 can be performed as part ofa method. Alternatively, a non-transitory computer-readable medium cancomprise instructions that, when executed by one or more processors,cause a computing device to perform the acts of FIG. 2. In someembodiments, a system can perform the acts of FIG. 2. Further, in theseor other embodiments, any component may perform an act in waysalternative to that described in the following sections. For example, anact described as performed by the EADS 106 can, in some embodiments, beperformed in whole or in part by other components of the enterprisesystem 104.

As illustrated, the sequence begins at act 206 when the developer system116 requests setup of a developer account with the enterprise system104. For example, the developer system 116 may submit to the EADS 106general contact information, a résumé, a list of previously/currentlydeveloped applications, field(s) of expertise, development areas ofinterest, compliance with terms and conditions, etc. The developersystem 116 may submit the request via a developer application 204 on adeveloper device 202. The developer device 202 can be any one of avariety of computing devices, including a smartphone, tablet, smarttelevision, desktop computer, laptop computer, virtual reality device,augmented reality device, or other computing device.

In these or other embodiments, the developer application 204 is anapplication for uploading applications to the enterprise applicationsuite 108. Further, the developer application 204 can be an applicationfor the developer device 202 to access information regarding thedeveloper system 116, including applications under development, launchedapplications, etc. Additionally, the developer application 204 can be anapplication for accessing one or more enterprise accounts 110, forexample, to generate data solutions for the subscriber system 118.Accordingly, the developer application 204 can be a developer portal forthe developer system 116 with a variety of uses and functionalities. Inparticular, the developer application 204 may be a web application, anative application installed on the developer device 202 (e.g., a mobileapplication, a desktop application, etc.), or a cloud-based applicationwhere part of the functionality is performed by a server associated withthe developer system 116 and/or the server(s) 102. The developerapplication 204 can present or display information to a developer,including a user interface for interacting with the developerapplication 204 as described above.

In response to the request at act 206, the EADS 106 confirms setup ofthe developer account with the enterprise system 104 at act 208 bysending confirmation to the developer device 202 through the developerapplication 204. In some embodiments, act 208 is an automaticconfirmation, for example, in response to completion of one or moreforms in the request of act 206. In other embodiments, act 208 mayinclude a decision process by which the EADS 106 may accept or declinethat the developer system 116 receive a developer account as requestedat act 206.

At act 210, the developer system 116 uploads, via the developer device202 and the developer application 204, an application to the enterpriseapplication suite 108 of the EADS 106. In these or other embodiments,the upload to the enterprise application suite 108 can be part of anautomated workflow. For example, in response to initiating a request tosubmit an application to the enterprise application suite 108, thedeveloper system 116 may describe the application in the uploadsubmission, including how the application works with general applicationinformation, example user interfaces, diagrams, charts, potential usebenefits, example use cases, etc. Further, in response to initiating arequest to submit an application to the enterprise application suite108, the developer system 116 may provide one or more plans (e.g.,subscription plans, trial plans, etc.) and associated pricing. In thismanner, the EADS 106 enables a multitude of compatible purchase modelsfor a subscriber system 118 (e.g., per-seat licensing, flat fee plan,fixed-seat plans, and/or variable-seat plans, including with or withouttrial periods).

Additionally or alternatively, as part of the application uploadsubmission, the EADS 106 may request the developer system 116 to selectone or more APIs that will enable the soon-to-be-uploaded application(or the currently uploaded application) to work in conjunction with theenterprise accounts 110. Given the provided APIs from the EADS 106, thedeveloper system 116 can enable the application to permit communicationbetween the enterprise system 104 and the developer system 116. Forexample, the EADS 106 may generate and/or provide APIs to the developersystem 116 for selection that will permit the developer system 116and/or the application ready for upload to access specific data reportsor data streams associated with the enterprise accounts 110.Additionally or alternatively, the EADS 106 may generate and/or provideAPIs to the developer system 116 for selection that will permit thedeveloper system 116 and/or the application ready for upload to delivera data solution to an enterprise account 110 and/or the subscribersystem 118 that uses the application.

In these or other embodiments, the EADS 106 can provide APIs in aselection menu for selecting by the developer system 116. As referred toherein, the term “selection menu” refers to a user interface forselecting menu options. In particular, the selection menu may include auser interface by way of a display screen composed of graphicalcomponents, objects, and/or elements that allow a user to select and/ordeselect options within a menu. For example, the selection menu may beconfigured to receive user inputs that select, deselect, or otherwiseprovide indications of a selection/deselection of options. Examples ofoptions may include user accounts, APIs, data reports, subscriptionevents, etc. as described in the present disclosure.

At act 212, the EADS 106 confirms acceptance of the uploaded applicationat act 210. For example, the EADS 106 may send to the developer system116 an automatic confirmation (e.g., as part of an automated applicationsubmission work flow) that the EADS 106 received the uploadedapplication in the enterprise application suite 108. In particular, theEADS 106 may send confirmation to the developer system 116 when theuploaded application satisfies one or more upload requirements, such asa selection of APIs that when executed with the application enabletwo-way communication between the EADS 106 and the developer system 116via the uploaded application. Accordingly, prior to acceptance of theuploaded application, the EADS 106 in some embodiments can test whetherthe selected APIs are sufficient to enable communication and/orintegration of the uploaded application with a test enterprise account.If the uploaded application satisfies the test, the EADS 106 may confirmacceptance of the uploaded application. Otherwise, the EADS 106 may denyuploading of the application to the enterprise application suite 108and/or remove the uploaded application from the enterprise applicationsuite 108 with an explanation to the developer system 116 (e.g., thatone or more APIs should be selected and/or deselected at act 210).

At act 214, the EADS 106 requests from the developer system 116 an eventsubscription for the application. For example, the EADS 106 may provideto the developer system 116 a selection menu with options of variousevents about which the developer system 116 can indicate desired receiptof notifications, enterprise data (e.g., data reports), etc. relative tothe application. In some embodiments, the EADS 106 at act 214 (oranother suitable act) may request additional information from thedeveloper system 116. For example, the EADS 106 may request a standaloneuniform resource locator (hereafter “URL”) that the user accounts andassociated user applications (e.g., user applications 122-130) direct auser device (e.g., user devices 120-128) to in order to initiate theapplication created by the developer system 116. In another example, theEADS 106 may request a redirect URL that the user accounts andassociated user applications (e.g., user applications 122-130) direct auser device (e.g., user devices 120-128) to after successfullyidentifying the user account as associated with an authorized useraccount of the enterprise account 110. In yet another example, the EADS106 may request an events callback URL that the EADS 106 can use tosecurely deliver to the developer system 116 information regarding thedeveloper's application and/or regarding subscribed events described atact 216.

At act 216, the developer system 116 subscribes to events for theapplication such that when one or more of the subscribed events occur(e.g., a call received at the enterprise system 104 that is routed tothe subscriber system 118), the EADS 106 can, in response, communicatewith the developer system 116 in a manner indicated by the eventsubscription of act 214. For example, after the developer system 116subscribes to an event at act 216 and the event then occurs (e.g., acall is received at the enterprise system 104 that is routed to thesubscriber system 118), the EADS 106 can send a notification withassociated data to the developer system 116 in accordance with the eventsubscription described in act 214.

At act 218, the EADS 106 provides a public key to the developer system116. In some embodiments, the public key corresponds to the developersystem 116 and/or the associated developer account described in acts208-210. In other embodiments, the public key corresponds to one or moreof the enterprise accounts 110. Public keys are part of public keycryptography. As used herein, the term “public key cryptography” refersto an encryption scheme. In particular, public key cryptography includesalgorithms for producing public and private keys to generate one or moreportions of the application ID and authentication credential pairdefined above, designate a source or destination for a communication(e.g., a developer account or one of the enterprise accounts 110),and/or promote increased data use security and higher cybersecuritystandards. For example, communications between the developer system 116and an enterprise account 110 may be encrypted using public keycryptography. Other benefits of public key cryptography include secureverification and non-repudiation of various types of events, requests,installations, etc.

As mentioned above, the EADS 106 and the developer system 116 interactwith each other to provide applications to the enterprise applicationsuite 108. As such, FIGS. 3A-3B illustrate an example user interface 300displayed on a developer device 302 at the developer system 116 foruploading an application to the EADS 106, arranged according to one ormore embodiments of the present disclosure. The developer device 302 maybe the same as or similar to the developer device 202 described above inconjunction with FIG. 2. As shown in FIGS. 3A-3B, the user interface 300includes properties 304 and client keys 314.

In particular, the EADS 106 provides the user interface 300 with theproperties 304 that includes an application name 306, a description 308,and one or more client IDs 310. The application name 306 can include anidentifier of the application, a nickname, project, etc. In these orother embodiments, the application name 306 may be associated with aname of the application as shown in the enterprise application suite108, while in other embodiments, for internal use only for the developersystem 116. Further, the EADS 106 provides the user interface 300 withthe description 308 that can include an overview of the application,main features of the application, a project description, manager(s) incharge of the application, or any other suitable information.Additionally, the one or more client IDs 310 can include an alphanumericidentifier (or other suitable identifier) that is unique to a particularenterprise account 110 and/or subscriber system 118.

With respect to the client keys 314, the EADS 106 provides the userinterface 300 with the client keys 314 that can include a key ID 316, apublic key 318, a key algorithm 320, a creation date 322, an expirationdate 324, and an access change authorization 326. As shown in FIGS.3A-3B, the client keys 314 depicted correspond to a single client ID310, while in other embodiments, other client keys 314 can also be shownthat correspond to other client IDs 310. In some embodiments, the key ID316 includes a shortened version of the public key 318. The public key318 is an encryption identifier particular to a given user accountand/or user device. In some embodiments, the public key 318 is anidentifier for the application ID and authentication credential pairdescribed above. In particular, the developer system 116 can send anencrypted communication to a particular user device in the subscribersystem 118 using the public key 318 associated with the particular userdevice/user account. Then, the particular user device/user account candecrypt the encrypted communication using its own secret, private keyaccording to public-key cryptography principles. Additionally oralternatively, the EADS 106 can send an encrypted communication to thedeveloper system 116 using the public key 318 associated with aparticular user device/user account. Then, the developer system 116 candecrypt the encrypted communication using its own secret, private keyaccording to public-key cryptography principles. In this manner, publickey cryptography can enable the developer system 116 and/or the EADS 106to verify digital signatures (e.g., to verify the data sender andconfirm no data tampering or forging of various types of requestsdiscussed in this disclosure).

Further, the key algorithm 320 is configured to produce (e.g., randomlyproduce) public-private key pairs including the application ID andauthentication credential pairs, in which the private key is theauthentication credential that corresponds to the public key (e.g., theapplication ID). In these or other embodiments, a button 312 can, whenexecuted, create an application ID and authentication credential pair(e.g., public key 318 and private key pairs) using the key algorithm320.

In some embodiments, the creation date 322 and the expiration date 324define a time period during which each respective user account hasaccess to the application. The creation date 322 may include theday/time access is initially granted to the user account and/or to otheruser accounts associated with an enterprise account 110. Further, theexpiration date 324 may include the day/time access is set to end forthe user account and/or other user accounts associated with enterpriseaccount 110. In these or other embodiments, the creation date 322 and/orthe expiration date 324 may be changed. For example, the access changeauthorization 326 may include a link that when executed causes accessfor the associated user account to change, for example, become revoked,reinstated, etc.

As further shown in FIG. 3B, the EADS 106 provides the user interface300 with access scopes 328. The access scopes 328 may include accesspermissions that are suggested and/or required in order for theapplication and associated developer system 116 to generate desired datasolutions. The access scopes 328 includes, for example, reports readaccess 330, reports write access 332, recording read access 334, and/oraccounts read access 336. With the reports read access 330, theapplication and/or the developer system 116 may download, access and usepreviously generated reports. Additionally, with the reports writeaccess 332, the application and/or the developer system 116 may createnew reports or delete existing ones. Further, with the recording readaccess 334, the application and/or the developer system 116 maydownload, access, and use recording metadata and associated files. Also,with the accounts read access 336, the application and/or the developersystem 116 may obtain details from events, such as the subscribed eventsdiscussed above in conjunction with FIG. 2.

Modifications, additions, or omissions may be made to the user interface300 without departing from the scope of the present disclosure. Forexample, in some embodiments, the user interface 300 may include anynumber of other components that may not be explicitly illustrated ordescribed. Moreover, the separation of various components in theembodiments described herein is not meant to indicate that theseparation occurs in all embodiments. In addition, it may be understoodwith the benefit of this disclosure that the described components may beintegrated together in a single component or separated into multiplecomponents.

As mentioned above, the EADS 106 and the developer system 116communicate to manage applications that are uploaded to the enterpriseapplication suite 108. As such, FIGS. 4A-4B illustrate an example userinterface 400 displayed on a developer device 402 at the developersystem 116 for managing an application uploaded to the enterpriseapplication suite 108 of the EADS 106. The developer device 402 may bethe same as or similar to the developer device 202 and/or the developerdevice 302 described above in conjunction with FIG. 2 and FIGS. 3A-3B,respectively. As shown in FIGS. 4A-4B, the EADS 106 provides the userinterface 400 with an application overview status 404, an applicationlisting 406, application metrics 408, a button 410, and an API status412.

In particular, the EADS 106 provides the user interface 400 with theapplication overview status 404 that includes a description of a currentstage or development phase that the applications listed in theapplication listing 406 are presently located. For example, the userinterface 400 depicts the application overview status 404 as showing oneapplication on “AppConnect” (e.g., the enterprise application suite 108)and one application in “Development.” Additionally, the applicationlisting 406 may, in each listing, provide general information regardinga corresponding application.

With respect to the application metrics 408, the EADS 106 provides theuser interface 400 with the application metrics 408 that includesvarious statistics regarding one or more applications provided in theapplication listing 406. For example, as shown, “Super App” has beendownloaded fifty-three times, has an average time of fifty-three percentspent in the application, and has a fifty-three percent retention rate.Other suitable metrics are herein contemplated.

With respect to the button 410, the EADS 106 provides the user interface400 with the button 410 that when executed causes the user interface 400to initiate a new work flow for a new application, e.g., as described inFIGS. 3A-3B. Additionally or alternatively, the button 410 when executedrenders a new user interface to permit new application developmentwithin the developer application 204 provided by the EADS 106 (e.g., anew window for writing code, opening a template application forediting/adding to existing code, etc.).

With respect to the API status 412, the EADS 106 provides the userinterface 400 with the API status 412 that includes an operationalstatus and/or an API status indicating to what extent the application isoperational with an enterprise account 110. For example, were a bug toexist in one of the selected APIs, the EADS 106 would cause thedeveloper device 402 to display one or more issues with an API and/orpotential bug fixes for solving the issue.

Modifications, additions, or omissions may be made to the user interface400 without departing from the scope of the present disclosure. Forexample, in some embodiments, the user interface 400 may include anynumber of other components that may not be explicitly illustrated ordescribed. Moreover, the separation of various components in theembodiments described herein is not meant to indicate that theseparation occurs in all embodiments. In addition, it may be understoodwith the benefit of this disclosure that the described components may beintegrated together in a single component or separated into multiplecomponents.

As mentioned above, the subscriber system 118 subscribes to servicesprovided by the enterprise system 104, including services providedthrough an application created by the developer system 116. As such,FIG. 5 illustrates a sequence flow of a series of acts performed byvarious components interacting with the EADS 106, arranged in accordancewith at least one embodiment of the present disclosure. In particular,FIG. 5 illustrates a series of acts for providing access to multipleuser accounts associated with an enterprise account 110. While FIG. 5illustrates acts according to one embodiment, alternative embodimentsmay omit, add to, reorder, and/or modify any of the acts shown in FIG.5. The acts of FIG. 5 can be performed as part of a method.Alternatively, a non-transitory computer-readable medium can compriseinstructions that, when executed by one or more processors, cause acomputing device to perform the acts of FIG. 5. In some embodiments, asystem can perform the acts of FIG. 5. Further, in these or otherembodiments, any component may perform an act in ways alternative tothat described in the following sections. For example, an act describedas performed by the EADS 106 can, in some embodiments, be performed inwhole or in part by other components of the enterprise system 104.

The series of acts begins at act 502 where the EADS 106 receives arequest sent from the user device 120 to install an application includedin the enterprise application suite 108. In some embodiments, the userdevice 120 may be an administrator device. For example, a user may,through the user application 122 on the user device 120, interact with auser interface and select an application for installation by clicking onan install button (e.g., as shown in FIG. 6). Accordingly, the EADS 106can receive from an administrator device (e.g., the user device 120) arequest to install an application from among a group of applications inthe enterprise application suite 108.

At act 504, the EADS 106 notifies the developer system 116 of theinstallation request described in act 502. In some embodiments, the EADS106 may automatically notify the developer system 116 of theinstallation request (e.g., in response to the selection of the installbutton at the administrator device). In other embodiments, the EADS 106may, prior to notifying the developer system 116, determine that theinstallation from the administrator device is legitimate and/or mayrequire proof of authorization (e.g., an authorization code known amongauthorized administrators, etc.). Additionally or alternatively, theEADS 106 may retry the installation request in the event that thedeveloper system 116 returns an error. For example, the EADS 106 mayretry the installation request until receiving a successful reply fromthe developer system 116 or until the installation request times out.

At act 506, and based on the EADS 106 notifying the developer system 116of the installation request, the developer system 116 determines whetherto accept or reject the installation request. In some embodiments, thedeveloper system 116 may automatically accept the installation request,except for limited circumstances (e.g., when initiating from anenterprise account having a number of user accounts satisfying somethreshold number, etc.). In other embodiments, the developer system 116may make a case-by-case determination, whether through artificialintelligence or authorized personnel.

At act 508, the EADS 106 receives from the developer system 116 anotification of the decision regarding the installation request. Thedecision may include explanation or reasoning from the developer system116, while in other embodiments the notification may only include thedecision of acceptance or rejection. If the EADS 106 receives anacceptance notification from the developer system 116 that approves theinstallation request, the series of acts can proceed to act 510.Otherwise, the EADS 106 may notify the user device 120 of alternativesand/or next steps. For example, in the case of rejection, the EADS 106may notify the user device 120 of alternative applications that supporta call center with a number of call agents that match the enterpriseaccount.

At act 510, the EADS 106 provides a selection menu to the user device120 in which the selection menu includes a list of user accountsassociated with the enterprise account 110. In some embodiments, theselection menu may appear similar to the selection menu shown in FIG. 8,and may include various groups of user accounts and/or individual useraccounts according to any sorting, filter, and/or category of useraccounts.

At act 512, the EADS 106 receives a selection of user accounts selectedby the user device 120. For example, the user device 120 may select oneor more user accounts in the selection menu, after which the user device120 can confirm that the selected user accounts are to receive access tothe application.

At act 514, the EADS 106 receives access permissions from the userdevice 120 that approve access to one or more data reports and/or anyother enterprise data associated with the enterprise accounts 110. Forexample, as shown in FIG. 9, the application may require access tocertain data reports in order to generate a data solution. Further, andas described in conjunction with the access scopes 328 of FIG. 3B, theapproved access permissions may include various types of access withdifferent breadth and capabilities.

At act 516, the EADS 106 generates application ID and authenticationcredential pairs. For example, using public key cryptography, the EADS106 can determine a unique application ID and authentication credentialpair for each user account selected to receive access to theapplication. In some embodiments, EADS 106 may associate one or more ofthe application ID and authentication credential pairs based on a typeof the user account within the enterprise account 110. For example, theEADS 106 may associate a first application ID and authenticationcredential pair with a supervisor account, and a second application IDand authentication credential pair with an agent account.

Additionally or alternatively, the EADS 106 may provide differentclearance levels to certain user accounts. As used herein, the term“clearance levels” refers to degrees of access defined above. Inparticular, clearance levels may include different use permissions orprivileges within a user account. For example, a supervisor account mayinclude a higher clearance level than another clearance level associatedwith an agent account. For instance, the EADS 106 may provide a firstclearance level to the supervisor account by associating the firstclearance level with the first application ID and authenticationcredential pair. Additionally, the EADS 106 may provide a secondclearance level to the agent account by associating the second clearancelevel with the second application ID and authentication credential pair,wherein the second clearance level provides less clearance than thefirst clearance level.

At act 518, the EADS 106 sends to the developer system 116 theapplication ID and authentication credential pairs associated with theuser accounts selected at act 512. In this manner, the developer system116 can manage access to the application on a per-user-account basis foran enterprise account 110. For example, the application ID andauthentication credential pairs enable the developer system 116 torevoke access to user accounts indicating evidence of improper accountusage without affecting application access for other user accountswithin the enterprise account 110, and without affecting otherthird-party applications for the enterprise account 110. Additionally,the application ID and authentication credential pairs help to ensurethat forged install requests do not occur, thereby falsely representingrevenues, needed resources, etc. that might negatively affect thedeveloper system 116.

At act 520, the EADS 106 confirms to the user device 120 that access isprovided to the application on user devices associated with the selecteduser accounts (e.g., user devices 120-128). In this manner, the EADS 106provides access to the application to multiple user accounts andassociated user devices via a single install request from the userdevice 120 at act 502.

As mentioned above, the user device 120 can send an installation requestfor an application included in the enterprise application suite 108. Tothat end, FIG. 6 illustrates a user interface 600 on a user device 602for sending an installation request to the EADS 106, arranged inaccordance with at least one embodiment of the present disclosure. Theuser device 602 may be the same as or similar to the user devices120-128 described above in conjunction with FIG. 1 and FIG. 5. As shownin FIG. 6, the EADS 106 provides a user interface 600 that includes anapplication name 604, an install button 606, information sections608-610, and information links 612.

In particular, the EADS 106 may cause to display the application name604 in a position, size, font, etc. to help the user identify the nameof the application as the application name 604. Additionally, the EADS106 may cause to display in the user interface 600 a logo or othergraphic design to accompany a textual portion of the application name604.

Further, the EADS 106 may cause to display the install button 606 thatwhen executed initiates the series of acts discussed in relation to FIG.5 to provide access to multiple user accounts on an enterprise account110. As shown, the install button 606 may include the word “install,”while in other embodiments, the install button 606 may include differentwords, phrases, or symbols (e.g., “purchase,” “try it,” “proceed touse,” “access here,” “productivity boost,” “save $,” etc.).

In addition, the EADS 106 may cause to display the user interface 600with various types of information regarding the application in theinformation sections 608-610. The information sections 608-610 mayinclude main features of the application, use benefits, productguarantees, a developer of the application, recent updates, a version ofthe application, or any other type of information helpful to a user inunderstanding more about the application. Also, the EADS 106 may causeto display the user interface 600 with the information links 612, whichinclude additional informational resources regarding the application.

As mentioned above, the EADS 106 may, upon receiving an install requestfrom the user device 120, provide different plans of the application.Accordingly, FIG. 7 illustrates a user interface 700 displayed on adevice 702 for selecting an enterprise plan, arranged in accordance withat least one embodiment of the present disclosure. The user device 702may be the same as or similar to the user devices 120-128 and userdevice 602 described above in conjunction with FIG. 1 and FIG. 6,respectively. As shown in FIG. 7, the user interface 700 includes anenterprise plan selection menu 704, a navigation pane 706, a shoppingcart 708, and one or more navigation buttons 710.

In particular, the EADS 106 causes the user device 702 to display theuser interface 700 with the enterprise plan selection menu 704 includinga drop-down menu, a list, or other presentation of enterprise planoptions. In this manner, the EADS 106 can receive user inputs to selectan option within the enterprise plan selection menu 704. As depicted inFIG. 7, the enterprise plan selection menu 704 includes a free trialplan that extends in this case for a trial period of thirty days. Shouldthe user select the free trial plan indicated in the enterprise planselection menu 704, the EADS 106 would initiate the series of actsdescribed in relation to FIG. 5. At the end of the trial period, theEADS 106 can determine if the trial should be extended. If yes, the EADS106 may choose to extend the trial period accordingly. If not, the EADS106 may request the subscriber system 118 to upgrade to a paidenterprise plan, or otherwise deny the subscriber system 118 furtheraccess to the application under the free trial plan. The EADS 106 mayoutline these and other example scenarios in an overview of the freetrial plan indicated in the enterprise plan selection menu 704.

As further shown in FIG. 7, the EADS 106 causes the user device 702 todisplay the navigation pane 706 with various steps a user undergoesafter initiating the install request for providing access to theapplication to multiple user accounts within an enterprise account 110.In addition, the navigation pane 706 can indicate to a user a currentstep within a group of steps for achieving access to the application formultiple user accounts within an enterprise account 110. As the userproceeds through the steps outlined in the navigation pane 706, the EADS106 can update the shopping cart 708 to reflect user-selected options(e.g., according to the selected enterprise plan, number of licenses,etc.). Further, the EADS 106 causes the user device 702 to display thenavigation button 710 that when executed moves the user forwards orbackwards with respect to the steps outlined in the navigation pane 706.

As mentioned above, the EADS 106 enables the user device 120 to selectwhich user accounts within the enterprise account 110 are to receiveaccess to the application. As such, FIG. 8 illustrates a user interface800 on a user device 802 for selecting user accounts to receive accessto the application in response to an install request from the userdevice 120, all arranged according to one or more embodiments of thepresent disclosure. The user device 802 may be the same as or similar tothe user devices 120-128 and user devices 602, 702 described above inconjunction with FIG. 1, FIG. 6, and FIG. 7, respectively. As shown inFIG. 8, the user interface 800 includes the navigation pane 706, theshopping cart 708, and the navigation button 710 described above inaddition a user account selection menu 804 and a search bar 806.

In particular, the EADS 106 causes the user device 802 to display theuser interface 800 with the user account selection menu 804 thatincludes various user accounts (e.g., individual user accounts, groupsof user accounts, departments of user accounts, clearance levels of useraccounts, etc.). Further, the EADS 106 can receive user inputs to selectone or more user accounts within the enterprise account 110 to receiveaccess to the application. Additionally, the EADS 106 can return searchresults in the form of user accounts in response to user inputs (e.g.,search queries) at the search bar 806. After the user selects which useraccounts are to receive access to the application, the EADS 106 canupdate the shopping cart 708 and proceed to the next step outlined inthe navigation pane 706 in response to a user input at the navigationbutton 710 of “Next.”

As mentioned above, the EADS 106 provides the developer system 116access to enterprise data of the enterprise account 110 so that thedeveloper system 116 can generate data solutions based on the providedenterprise data. As such, FIG. 9 illustrates a user interface 900 on auser device 902 for granting authorization for the developer system 116to access enterprise data, arranged according to one or more embodimentsof the present disclosure. The user device 902 may be the same as orsimilar to the user devices 120-128 and user devices 602, 702, 802described above in conjunction with FIG. 1, FIG. 6, FIG. 7, and FIG. 8,respectively. As shown in FIG. 9, the user interface 900 includes thenavigation pane 706, the shopping cart 708, and the navigation button710 described above in addition to data reports 904 and terms andconditions 906.

In particular, the EADS 106 causes the user device 902 to display theuser interface 900 with the data reports 904 that includes a list ofsuggested and/or required enterprise data sets that the developer system116 uses to create data solutions. The EADS 106 may require the datareports 904 to be uploaded to the user interface 900, while in otherembodiments the EADS 106 subsequently delivers the data reports 904 tothe developer system 116 and/or permits the developer system 116 toaccess the data reports 904 on the server(s) 102 within the enterpriseaccount 110. Further, the EADS 106 causes the user device 902 to displaythe user interface 900 with the terms and conditions 906 to ensure thatthe subscriber system 118 agrees to honor the terms and conditions ofboth the developer system 116 and the enterprise system 104. Withagreement to the terms and conditions 906 (e.g., satisfied by a userinput confirming agreement), the EADS 106 may update the shopping cart708 and proceed to providing access to the selected user accounts oncethe EADS 106 receives another user input at the navigation button 710 of“Install.”

Modifications, additions, or omissions may be made to the userinterfaces 600-900 of FIGS. 6-9 without departing from the scope of thepresent disclosure. For example, in some embodiments, any of the userinterfaces 600-900 may include any number of other components that maynot be explicitly illustrated or described. Moreover, the separation ofvarious components in the embodiments described herein is not meant toindicate that the separation occurs in all embodiments. In addition, itmay be understood with the benefit of this disclosure that the describedcomponents may be integrated together in a single component or separatedinto multiple components.

As mentioned above, the developer system 116 generates data solutionsfor the subscriber system 118 and the EADS 106 provides enterpriseservices for the subscriber system 118. As such, FIGS. 10A-10Billustrate a sequence flow of a series of acts performed by variouscomponents interacting with the EADS 106, arranged in accordance with atleast one embodiment of the present disclosure. In particular, FIGS.10A-10B illustrate example interactions between various components inresponse to the occurrence of a subscribed event, which in this case isa received call at the enterprise system 104. While FIGS. 10A-10Billustrate acts according to one embodiment, alternative embodiments mayomit, add to, reorder, and/or modify any of the acts shown in FIGS.10A-10B. The acts of FIGS. 10A-10B can be performed as part of a method.Alternatively, a non-transitory computer-readable medium can compriseinstructions that, when executed by one or more processors, cause acomputing device to perform the acts of FIGS. 10A-10B. In someembodiments, a system can perform the acts of FIGS. 10A-10B. Further, inthese or other embodiments, any component may perform an act in waysalternative to that described in the following sections. For example, anact described as performed by the EADS 106 can, in some embodiments, beperformed in whole or in part by other components of the enterprisesystem 104.

The series of acts begins at act 1002 where the EADS 106 receives logincredentials from the user device 120 through the user application 122 toaccess the user account associated with the enterprise account 110. Atact 1004, the EADS 106 accepts the login credentials from the userdevice 120. At act 1006, a subscribed event occurs in which theenterprise system 104 receives a call (e.g., from a customer or client).

At act 1008, the enterprise system 104 routes the call to the userdevice 120 of the subscriber system 118 in accordance with theenterprise-subscriber arrangement between the subscriber system 118 andthe enterprise system 104. However, since the subscriber system 118 alsoreceives services (e.g., data solutions) from the developer system 116through the installed application from the enterprise application suite108 (as described in relation to FIGS. 5-9), the EADS 106 at act 1010notifies the developer system 116 of the subscribed event and in thiscase requests customer relationship management (hereafter “CRM”) datafrom the developer system 116.

At act 1012, the developer system 116 sends the CRM data (e.g., asrequested or instructed by the EADS 106) to the user device 120 via theinstalled application accessed through the user account associated withthe enterprise account 110. At act 1014, the EADS 106 causes the userdevice 120 to display the CRM data via the user account associated withthe enterprise account 110. Specifically, the user device 120 displaysthe CRM data generated by the developer system 116 through the userapplication 122 of the enterprise account 110 without needing toseparately login to the installed application. Additionally oralternatively, the user device 120 may display at least some portions ofthe CRM data via the user application 122 sent from the EADS 106 insteadof the developer system 116 (e.g., in a separate window but withoutadditional logins). At act 1016, the user device 120 and/or the customerends the call. In these or other embodiments, the call ending is anothersubscribed event from which the EADS 106 generates data and/or thedeveloper system 116 provides data solutions.

As a result of the call ending at act 1016, the EADS 106 receives calldata sent from the subscriber system 118 at act 1018. The call data mayinclude any data associated with the call, including any resulting dataobtained about the customer, a product, payment information, etc.Additionally or alternatively, the call data may include any dataassociated with handling the call, e.g., a call wait time, a number oftransfers, voice analytics, customer satisfaction, efficiency, a callduration, etc. Based on the call data received at the EADS 106, the EADS106 generates data reports at act 1020. The data reports may include anyaspect of the call data and/or any data derivative therefrom. Examplesof data reports include the data reports 904 shown in FIG. 9.Additionally or alternatively, the data reports may include any type offile (e.g., .csv, .xlsx, .pdf, .docx, etc.).

At act 1022, the EADS 106 sends the data reports to the developer system116. The EADS 106 may send the data reports to the developer system 116on a continual, rolling basis (e.g., as EADS 106 completes them) and/oron a batch basis with multiple data reports (e.g., at regularintervals). Additionally or alternatively, the EADS 106 can enableand/or provide various types of permissions to the developer system 116to access the data reports at the EADS 106 (e.g., via one or more APIs).At act 1024, the developer system 116 updates the CRM data based on thedata reports sent from the EADS 106. For example, the developer system116 may update the CRM data as instructed by the EADS 106 to providecurrent information to the subscriber system 118 in response to the nextsubscribed event.

As mentioned above, the subscriber system 118 can request access changesfor one or more user accounts within the enterprise account 110 in sucha way as to not affect other user accounts. As such, FIG. 11 illustratesa sequence flow of a series of acts performed by various componentsinteracting with the EADS 106, arranged in accordance with at least oneembodiment of the present disclosure. In particular, FIG. 11 illustratesa series of acts for handling access changes for user accounts in amanner that syncs the developer system 116 with the EADS 106. While FIG.11 illustrates acts according to one embodiment, alternative embodimentsmay omit, add to, reorder, and/or modify any of the acts shown in FIG.11. The acts of FIG. 11 can be performed as part of a method.Alternatively, a non-transitory computer-readable medium can compriseinstructions that, when executed by one or more processors, cause acomputing device to perform the acts of FIG. 11. In some embodiments, asystem can perform the acts of FIG. 11. Further, in these or otherembodiments, any component may perform an act in ways alternative tothat described in the following sections. For example, an act describedas performed by the EADS 106 can, in some embodiments, be performed inwhole or in part by other components of the enterprise system 104.

As illustrated, the series of acts begins at act 1102 where the EADS 106receives from the subscriber system 118 a request for an access changeto a user account associated with the enterprise account 110. Forexample, an admin device (e.g., the user device 120) may send acommunication to the EADS 106 requesting that the EADS 106 remove accessto the application from a user device (e.g., the user device 124). Inthis example scenario, the admin wishes to remove access to theapplication associated with one user account on the user device 124 andleave all other user accounts with their respective accesses to theapplication intact. In response to the request, the EADS 106 notifiesthe developer system 116 of the access change request at act 1104.

At act 1106, the developer system 116 determines within a threshold synctime whether to accept or reject the access change request based on thenotification from the EADS 106 at act 1104. As used herein, the term“threshold sync time” refers to a period of time. In particular, thethreshold sync time can define an amount of time for which accesschanges can be approved, disapproved, reviewed, remain pending, etc. Forexample, the threshold sync time may include a time limit, anexpiration, a closing time, etc. In some embodiments, the developersystem 116 may automatically accept the access change request, exceptfor limited circumstances (e.g., when lowering a clearance level,raising a clearance level beyond multiple clearance levels, entirelyremoving access, etc.). In other embodiments, the developer system 116may make a case-by-case determination, whether through artificialintelligence or authorized personnel.

At act 1108, the EADS 106 receives from the developer system 116 anotification of the decision regarding the access change request. Thedecision may include explanation or reasoning from the developer system116, (e.g., explanation with alternative access changes that areacceptable according to policies of the subscriber system 118, theenterprise system 104, and/or the developer system 116) while in otherembodiments only the decision of acceptance or rejection.

At act 1110, the EADS 106 relays the decision of the access changerequest to the subscriber system 118. If the developer system 116accepts the access change request, the series of acts illustrated inFIG. 11 end. Similarly, if the developer system 116 rejects the accesschange request, the series of acts illustrated in FIG. 11 end. However,the series of acts can proceed to acts 1112 and/or 1114 if the developersystem 116 fails to determine within the threshold sync time whether toaccept or reject the access change request.

At act 1112, the EADS 106 enables direct contact between the subscribersystem 118 and the developer system 116 if the decision of act 1106 doesnot occur within the threshold sync time. For example, the EADS 106 mayinform the subscriber system 118 of a direct connection (e.g., telephoneline) to contact the developer system 116 directly to find outadditional information and/or request that the access change request begranted (e.g., synced with the developer system 116).

At act 1114, the EADS 106 cancels the requested access change if thedecision of act 1106 does not occur within the threshold sync time. Inthis manner, the EADS 106 helps to ensure that the developer system 116is synced with the EADS 106 and that no access discrepancies existbetween the enterprise system 104, the developer system 116, and/or thesubscriber system 118. In some embodiments, the EADS 106 may perform act1114 automatically at the end of the threshold sync time, while in otherembodiments, after a grace period.

In other embodiments, act 1114 may be modified. For example, at the endof the threshold sync time, the EADS 106 may approve the requestedaccess change on behalf of the developer system 116 and/or force syncwith the developer system 116 such that the developer system 116 isupdated to reflect the new access change. Other alternatives are hereincontemplated.

Turning now to FIG. 12, additional detail will be provided regardingcomponents and capabilities of the EADS 106 part of the enterprisesystem 104. Specifically, FIG. 12 illustrates an example schematicdiagram of the EADS 106 on an example computing device 1200 (e.g., theserver(s) 102). As shown in FIG. 12, the EADS 106 of the enterprisesystem 104 includes the enterprise application suite 108, a developerapplication intake manager 1202, an application ID and authenticationcredential pair manager 1204, and an enterprise application accessmanager 1206.

As just mentioned, the user device 1200 includes the developerapplication intake manager 1202. The developer application intakemanager 1202 manages the intake of applications created by developersfor submission to the enterprise application suite 108. For example, thedeveloper application intake manager 1202 manages, obtains, gathers,collects, identifies, determines, or requests data with respect todeveloper systems 116 and/or information regarding an application readyfor upload to the enterprise application suite 108. Additionally oralternatively, for example, the developer application intake manager1202 handles application queries from the developer system 116, requeststhe developer system 116 to select and use APIs that render theapplication compatible with enterprise accounts 110, and/or collects oneor more uniform resource locators (URLs) from the developer system 116for secure communication flows. Based on the application intake, thedeveloper application intake manager 1202 can upload or otherwisepopulate the enterprise application suite 108 as described above so asto include the application.

As also mentioned, the EADS 106 includes the application ID andauthentication credential pair manager 1204. The application ID andauthentication credential pair manager 1204 manages, generates, obtains,stores, sends, and/or receives application ID and authenticationcredential pairs. For example, using public key cryptography, theapplication ID and authentication credential pair manager 1204 cangenerate unique application ID and authentication credential pairs foreach user account associated with an enterprise account as describedabove.

As further mentioned, the EADS 106 includes the enterprise applicationaccess manager 1206. The enterprise application access manager 1206manages, provides, requests, approves, accepts, rejects, denies, and/orverifies user account access to installed applications. Additionally oralternatively, the enterprise application access manager 1206 handlesaccess change requests in a manner that enables the EADS 106, thesubscriber system 118, and/or the subscriber system 118 to be in syncwith each other, for example, using a threshold sync time in whichaccess changes can be approved or rejected as described above.

In one or more embodiments, each of the components of the EADS 106 arein communication with one another using any suitable communicationtechnologies. Additionally, the components of the EADS 106 can be incommunication with one or more other devices including one or moreclient devices described above. It will be recognized that although thecomponents of the EADS 106 are shown to be separate in FIG. 12, any ofthe subcomponents may be combined into fewer components, such as into asingle component, or divided into more components as may serve aparticular implementation. Furthermore, although the components of FIG.12 are described in connection with the EADS 106, at least some of thecomponents for performing operations in conjunction with the EADS 106described herein may be implemented on other devices within theenvironment (e.g., the environment 100 of FIG. 1).

The components of the EADS 106 can include software, hardware, or both.For example, the components of the EADS 106 can include one or moreinstructions stored on a computer-readable storage medium and executableby processors of one or more computing devices (e.g., the computingdevice 1200). When executed by the one or more processors, thecomputer-executable instructions of the EADS 106 can cause the computingdevice 1200 to perform the methods described herein. Alternatively, thecomponents of the EADS 106 can comprise hardware, such as a specialpurpose processing device to perform a certain function or group offunctions. Additionally or alternatively, the components of the EADS 106can include a combination of computer-executable instructions andhardware.

Furthermore, the components of the EADS 106 performing the functionsdescribed herein may, for example, be implemented as part of astand-alone application, as a module of an application, as a plug-in forapplications including enterprise deployment applications, as a libraryfunction or functions that may be called by other applications, and/oras a cloud-computing model. Thus, the components of the EADS 106 may beimplemented as part of a stand-alone application on a personal computingdevice or a mobile device.

FIGS. 1-12, the corresponding text, and the examples provide a number ofdifferent systems, methods, and non-transitory computer readable mediafor providing application access to multiple devices associated withmultiple user accounts of an enterprise account. In addition to theforegoing, embodiments can also be described in terms of flowchartscomprising acts for accomplishing a particular result. For example, FIG.13 illustrates a flowchart of an example sequence of acts in accordancewith one or more embodiments.

While FIG. 13 illustrates acts according to one embodiment, alternativeembodiments may omit, add to, reorder, and/or modify any of the actsshown in FIG. 13. The acts of FIG. 13 can be performed as part of amethod. Alternatively, a non-transitory computer readable medium cancomprise instructions, that when executed by one or more processors,cause a computing device to perform the acts of FIG. 13. In stillfurther embodiments, a system can perform the acts of FIG. 13.Additionally, the acts described herein may be repeated or performed inparallel with one another or in parallel with different instances of thesame or other similar acts.

As illustrated in FIG. 13, the EADS 106 performs an example series ofacts 1300, including an act 1302 to provide an enterprise applicationsuite, which includes a group of applications, to an administratordevice associated with an enterprise account including a group of useraccounts. For example, the EADS 106 can provide an enterpriseapplication suite with applications that include a workforce managementapplication, a workforce optimization application, a quality assuranceapplication, and/or a voice analytics application.

The EADS 106 further performs an act 1304 to receive, from theadministrator device, a request to install an application from the groupof applications of the enterprise application suite. In someembodiments, the EADS 106 notifies a developer system 116 that candetermine whether to accept or reject the installation request.Additionally, the EADS 106 can relay to a subscriber system 118,including the administrator device, the decision of the developer system116 to accept or reject the installation request.

The EADS 106 further performs an act 1306 to provide, in response to therequest to install the application, to the administrator device aselection menu comprising a list of the user accounts corresponding tothe enterprise account. In some embodiments, the EADS 106 may cause todisplay the selection menu may with different types of user accounts,including groups of user accounts, individual user accounts, departmentsof user accounts, clearance levels of user accounts, etc. In particular,the selection menu may be configured to receive user inputs that select,deselect, or otherwise provide indications of a selection/deselection ofuser accounts.

The EADS 106 further performs an act 1308 to, in response to receivingan indication of a selection of a first user account and a second useraccount from the list of user accounts corresponding to the enterpriseaccount, associate a first application ID and authentication credentialpair with the first user account and associate a second application IDand authentication credential pair with a second user account. In someembodiments, the first application ID and authentication credential pairis different from the second application ID and authenticationcredential pair.

Further, in some embodiments of act 1308, the EADS 106 associates thefirst application ID and authentication credential pair with the firstuser account using public key cryptography and/or associates the secondapplication ID and authentication credential pair with the second useraccount using public key cryptography. Additionally or alternatively,the EADS 106 can associate the first application ID and authenticationcredential pair with a supervisor account, and the second application IDand authentication credential pair with an agent account. In these orother embodiments, the EADS 106 may provide a first clearance level tothe first user account (e.g., the supervisor account) by associating thefirst clearance level with the first application ID and authenticationcredential pair, and the EADS 106 may provide a second clearance levelto the second user account (e.g., the agent account) by associating thesecond clearance level with the second application ID and authenticationcredential pair, wherein the second clearance level provides lessclearance than the first clearance level.

The EADS 106 further performs an act 1310 to provide, to a first userdevice associated with the first user account, access to the applicationon the first user device using the first application ID andauthentication credential pair. In some embodiments, the EADS 106automatically provides access to the application on the first userdevice after granting the first user device access to the first useraccount associated with the enterprise account.

Additionally, the EADS 106 performs an act 1312 to provide, to a seconduser device associated with the second user account, access to theapplication on the second user device using the second application IDand authentication credential pair. In some embodiments, the EADS 106automatically provides access to the application on the second userdevice after granting the second user device access to the second useraccount associated with the enterprise account.

It is understood that the outlined acts in the series of acts 1300 areonly provided as examples, and some of the acts may be optional,combined into fewer acts, or expanded into additional acts withoutdetracting from the essence of the disclosed embodiments. As an exampleof an additional act not shown in FIG. 13, an act in the series of acts1300 may include the EADS 106 determining clearance levels within theapplication for the enterprise account. As another example act not shownin FIG. 13, an act in the series of acts 1300 may include the EADS 106causing the system to sync with a developer system that approves accesschanges to the application in the enterprise account.

As another example act not shown in FIG. 13, an act in the series ofacts 1300 may include, in response to receiving an indication of aselection of a third user account from the list of user accountscorresponding to the enterprise account, the EADS 106 associating athird application ID and authentication credential pair with the thirduser account. In still yet another example act not shown in FIG. 13, anact in the series of acts 1300 may include the EADS 106, providing, to athird user device associated with the third user account, access to theapplication on the third user device using the third application ID andauthentication credential pair. Furthermore, in yet another example actnot shown in FIG. 13, an act in the series of acts 1300 may include theEADS 106 causing the system to cancel the access changes for the thirduser account when the access changes for the third user account fail tosync with the developer system within a threshold sync time. In these orother embodiments, the threshold sync time includes an amount of timefor which access changes can be approved, disapproved, reviewed, remainpending, etc.

In another example act not shown in FIG. 13, an act in the series ofacts 1300 may include the EADS 106 causing the computer system to, inresponse to receiving an indication of a deselection of the second useraccount from the list of user accounts corresponding to the enterpriseaccount, disassociate the second application ID and authenticationcredential pair with the second user account to remove access to theapplication on the second user device. In these or other embodiments,the second application ID and authentication credential pair isindependent of other application ID and authentication credential pairssuch that removing access to the application on the second user devicedoes not affect access to any other third-party application on thesecond user device and does not affect access to the application on thefirst user device.

In yet another example act not shown in FIG. 13, an act in the series ofacts 1300 may include the EADS 106, in response to the request toinstall the application, notifying the administrator device of one ormore data reports the application is configured to access. Additionally,in an example act not shown in FIG. 13, an act in the series of acts1300 may include the EADS 106 providing, to a developer system 116 thatmanages development of the application, an application programminginterface (API) menu that includes one or more APIs of a plurality ofAPIs to integrate enterprise data corresponding to subscribed events ofthe enterprise account with the application. In another example act notshown in FIG. 13, an act in the series of acts 1300 may include the EADS106 automatically integrating enterprise data with the application usingone or more APIs. In still yet another example act not shown in FIG. 13,an act in the series of acts 1300 may include the EADS 106 causing thesystem to determine clearance levels within the application for theenterprise account. In these or other embodiments, the enterpriseaccount may be associated with a call center enterprise.

Embodiments of the present disclosure may comprise or utilize a specialpurpose or general-purpose computer including computer hardware, suchas, for example, one or more processors and system memory, as discussedin greater detail below. Embodiments within the scope of the presentdisclosure also include physical and other computer-readable media forcarrying or storing computer-executable instructions and/or datastructures. In particular, one or more of the processes described hereinmay be implemented at least in part as instructions embodied in anon-transitory computer-readable medium and executable by one or morecomputing devices (e.g., any of the media content access devicesdescribed herein). In general, a processor (e.g., a microprocessor)receives instructions, from a non-transitory computer-readable medium,(e.g., a memory, etc.), and executes those instructions, therebyperforming one or more processes, including one or more of the processesdescribed herein.

Computer-readable media can be any available media that can be accessedby a general purpose or special purpose computer system.Computer-readable media that store computer-executable instructions arenon-transitory computer-readable storage media (devices).Computer-readable media that carry computer-executable instructions aretransmission media. Thus, by way of example, and not limitation,embodiments of the disclosure can comprise at least two distinctlydifferent kinds of computer-readable media: non-transitorycomputer-readable storage media (devices) and transmission media.

Non-transitory computer-readable storage media (devices) includes RAM,ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM),Flash memory, phase-change memory (“PCM”), other types of memory, otheroptical disk storage, magnetic disk storage or other magnetic storagedevices, or any other medium which can be used to store desired programcode means in the form of computer-executable instructions or datastructures and which can be accessed by a general purpose or specialpurpose computer.

A “network” is defined as one or more data links that enable thetransport of electronic data between computer systems and/or modulesand/or other electronic devices. When information is transferred orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as a transmissionmedium. Transmissions media can include a network and/or data linkswhich can be used to carry desired program code means in the form ofcomputer-executable instructions or data structures and which can beaccessed by a general purpose or special purpose computer. Combinationsof the above should also be included within the scope ofcomputer-readable media.

Further, upon reaching various computer system components, program codemeans in the form of computer-executable instructions or data structurescan be transferred automatically from transmission media tonon-transitory computer-readable storage media (devices) (or viceversa). For example, computer-executable instructions or data structuresreceived over a network or data link can be buffered in RAM within anetwork interface module (e.g., a “NIC”), and then eventuallytransferred to computer system RAM and/or to less volatile computerstorage media (devices) at a computer system. Thus, it should beunderstood that non-transitory computer-readable storage media (devices)can be included in computer system components that also (or evenprimarily) utilize transmission media.

Computer-executable instructions comprise, for example, instructions anddata which, when executed at a processor, cause a general-purposecomputer, special purpose computer, or special purpose processing deviceto perform a certain function or group of functions. In someembodiments, computer-executable instructions are executed on ageneral-purpose computer to turn the general-purpose computer into aspecial purpose computer implementing elements of the disclosure. Thecomputer executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, or evensource code. Although the subject matter has been described in languagespecific to structural features and/or methodological acts, it is to beunderstood that the subject matter defined in the appended claims is notnecessarily limited to the described features or acts described above.Rather, the described features and acts are disclosed as example formsof implementing the claims.

Those skilled in the art will appreciate that the disclosure may bepracticed in network computing environments with many types of computersystem configurations, including, personal computers, desktop computers,laptop computers, message processors, hand-held devices, multi-processorsystems, microprocessor-based or programmable consumer electronics,network PCs, minicomputers, mainframe computers, mobile telephones,PDAs, tablets, pagers, routers, switches, and the like. The disclosuremay also be practiced in distributed system environments where local andremote computer systems, which are linked (either by hardwired datalinks, wireless data links, or by a combination of hardwired andwireless data links) through a network, both perform tasks. In adistributed system environment, program modules may be located in bothlocal and remote memory storage devices.

Embodiments of the present disclosure can also be implemented in cloudcomputing environments. In this description, “cloud computing” isdefined as a model for enabling on-demand network access to a sharedpool of configurable computing resources. For example, cloud computingcan be employed in the marketplace to offer ubiquitous and convenienton-demand access to the shared pool of configurable computing resources.The shared pool of configurable computing resources can be rapidlyprovisioned via virtualization and released with low management effortor service provider interaction, and then scaled accordingly.

A cloud-computing model can be composed of various characteristics suchas, for example, on-demand self-service, broad network access, resourcepooling, rapid elasticity, measured service, and so forth. Acloud-computing model can also expose various service models, such as,for example, Software as a Service (“SaaS”), Platform as a Service(“PaaS”), and Infrastructure as a Service (“IaaS”). A cloud-computingmodel can also be deployed using different deployment models such asprivate cloud, community cloud, public cloud, hybrid cloud, and soforth. In this disclosure, a “cloud-computing environment” is anenvironment in which cloud computing is employed.

FIG. 14 illustrates, in block diagram form, an example computing device1400 (e.g., the computing device 1200, the user devices 120-128, 602,702, 802, 902, the developer devices 202, 302, 402, and/or the server(s)102) that may be configured to perform one or more of the processesdescribed above. One will appreciate that the EADS 106 can compriseimplementations of the computing device 1400. As shown by FIG. 14, thecomputing device can comprise a processor 1402, memory 1404, a storagedevice 1406, an I/O interface 1408, and a communication interface 1410.Furthermore, the computing device 1400 can include an input device suchas a touchscreen, mouse, keyboard, etc. In certain embodiments, thecomputing device 1400 can include fewer or more components than thoseshown in FIG. 14. Components of computing device 1400 shown in FIG. 14will now be described in additional detail.

In particular embodiments, processor(s) 1402 includes hardware forexecuting instructions, such as those making up a computer program. Asan example, and not by way of limitation, to execute instructions,processor(s) 1402 may retrieve (or fetch) the instructions from aninternal register, an internal cache, memory 1404, or a storage device1406 and decode and execute them.

The computing device 1400 includes memory 1404, which is coupled to theprocessor(s) 1402. The memory 1404 may be used for storing data,metadata, and programs for execution by the processor(s). The memory1404 may include one or more of volatile and non-volatile memories, suchas Random-Access Memory (“RAM”), Read Only Memory (“ROM”), a solid-statedisk (“SSD”), Flash, Phase Change Memory (“PCM”), or other types of datastorage. The memory 1404 may be internal or distributed memory.

The computing device 1400 includes a storage device 1406 includesstorage for storing data or instructions. As an example, and not by wayof limitation, storage device 1406 can comprise a non-transitory storagemedium described above. The storage device 1406 may include a hard diskdrive (HDD), flash memory, a Universal Serial Bus (USB) drive or acombination of these or other storage devices.

The computing device 1400 also includes one or more input or output(“I/O”) devices/interfaces 1408, which are provided to allow a user toprovide input to (such as user strokes), receive output from, andotherwise transfer data to and from the computing device 1400. These I/Odevices/interfaces 1408 may include a mouse, keypad or a keyboard, atouch screen, camera, optical scanner, network interface, modem, otherknown I/O devices or a combination of such I/O devices/interfaces 1408.The touch screen may be activated with a writing device or a finger.

The I/O devices/interfaces 1408 may include one or more devices forpresenting output to a user, including, but not limited to, a graphicsengine, a display (e.g., a display screen), one or more output drivers(e.g., display drivers), one or more audio speakers, and one or moreaudio drivers. In certain embodiments, devices/interfaces 1408 isconfigured to provide graphical data to a display for presentation to auser. The graphical data may be representative of one or more graphicaluser interfaces and/or any other graphical content as may serve aparticular implementation.

The computing device 1400 can further include a communication interface1410. The communication interface 1410 can include hardware, software,or both. The communication interface 1410 can provide one or moreinterfaces for communication (such as, for example, packet-basedcommunication) between the computing device and one or more othercomputing devices 1400 or one or more networks. As an example, and notby way of limitation, communication interface 1410 may include a networkinterface controller (NIC) or network adapter for communicating with anEthernet or other wire-based network or a wireless NIC (WNIC) orwireless adapter for communicating with a wireless network, such as aWI-FI. The computing device 1400 can further include a bus 1412. The bus1412 can comprise hardware, software, or both that couple components ofcomputing device 1400 to each other.

FIG. 15 illustrates an example network environment 1500 of an enterprisesystem 104, arranged according to one or more embodiments of the presentdisclosure. The network environment 1500 includes a contacting userdevice 1502 (e.g., a customer device), an enterprise system 104, asubscriber system 1506 (e.g., the subscriber system 118), and a userdevice 1508 (e.g., the user device 120) connected to each other by anetwork 1504 (e.g., the network 114). Although FIG. 15 illustrates aparticular arrangement of the contacting user device 1502, theenterprise system 104, the user device 1508, the subscriber system 1506,and network 1504, this disclosure contemplates any suitable arrangementof the contacting user device 1502, the enterprise system 104, thesubscriber system 1506, the user device 1508, and the network 1504. Asan example, and not by way of limitation, two or more of the contactinguser device 1502, the enterprise system 104, the user device 1508, andthe subscriber system 1506 may be connected to each other directly,bypassing network 1504. As another example, two or more of thecontacting user device 1502, the enterprise system 104, the user device1508, and the subscriber system 1506 may be physically or logicallyco-located with each other in whole or in part. Moreover, although FIG.15 illustrates a particular number of contacting user devices 1502,enterprise systems 104, user devices 1508, subscriber systems 1506, andnetworks 1504, this disclosure contemplates any suitable number ofcontacting user devices 1502, enterprise systems 104, user devices 1508,subscriber systems 1506, and networks 1504. As an example, and not byway of limitation, network environment 1500 may include multiplecontacting user devices 1502, enterprise systems 104, user devices 1508,subscriber systems 1506, and networks 1504.

This disclosure contemplates any suitable network 1504. As an example,and not by way of limitation, one or more portions of the network 1504may include an ad hoc network, an intranet, an extranet, a virtualprivate network (VPN), a local area network (LAN), a wireless LAN(WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitanarea network (MAN), a portion of the Internet, a portion of the PublicSwitched Telephone Network (PSTN), a cellular telephone network, or acombination of two or more of these. The network 1504 may include one ormore networks 1504.

Links may connect the contacting user device 1502, the enterprise system104, the user device 1508, and the subscriber system 1506 to the network1504 or to each other. This disclosure contemplates any suitable links.In particular embodiments, one or more links include one or morewireline (such as for example Digital Subscriber Line (DSL) or Data OverCable Service Interface Specification (DOCSIS)), wireless (such as forexample Wi-Fi or Worldwide Interoperability for Microwave Access(WiMAX)), or optical (such as for example Synchronous Optical Network(SONET) or Synchronous Digital Hierarchy (SDH)) links. In particularembodiments, one or more links each include an ad hoc network, anintranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, aportion of the Internet, a portion of the PSTN, a cellulartechnology-based network, a satellite communications technology-basednetwork, another link, or a combination of two or more such links. Linksneed not necessarily be the same throughout network environment 1500.One or more first links may differ in one or more respects from one ormore second links.

In particular embodiments, the contacting user device 1502 and/or userdevice 1508 may be an electronic device including hardware, software, orembedded logic components or a combination of two or more suchcomponents capable of carrying out the appropriate functionalitiesimplemented or supported by the contacting user device 1502 and/or userdevice 1508. As an example, and not by way of limitation, a contactinguser device 1502 or user device 1508 may include any of the computingdevices discussed above in relation to FIG. 12. A contacting user device1502 may enable a network user (e.g., a contacting user) at thecontacting user device 1502 to access the network 1504. A contactinguser device 1502 may enable its user to communicate with other users atother contacting user devices 1502 and/or user devices 1508. Likewise, auser device 1508 may enable its user to communicate with contacting userdevices 1502, the subscriber system 1506, and/or the enterprise system104.

In particular embodiments, the user device 1508 is part of (e.g., housedwithin, either entirely or in part) the subscriber system 1506. Forexample, the subscriber system 1506 may include a service system whichmaintains one or more agent users, each associated with a separate userdevice 1508. Accordingly, the enterprise system 104 provides variousfunctionality, user interfaces, electronic communications, and otherinformation to the user device 1508 via the subscriber system 1506. Inother embodiments, the user device 1508 is not associated with or partof a subscriber system 1506. Rather, the user device 1508 refers to aclient device associated directly with the enterprise system 104 or adifferent third-party and that communicates with the enterprise system104 without interaction via the subscriber system 1506.

In particular embodiments, the contacting user device 1502 and/or theuser device 1508 may include a web browser, such as MICROSOFT INTERNETEXPLORER, GOOGLE CHROME or MOZILLA FIREFOX, and may have one or moreadd-ons, plug-ins, or other extensions, such as TOOLBAR or YAHOOTOOLBAR. A user at contacting user device 1502 and/or user device 1508may enter a Uniform Resource Locator (URL) or other address directingthe web browser to a particular server (such as server, or a serverassociated with a subscriber system 1506), and the web browser maygenerate a Hyper Text Transfer Protocol (HTTP) request or Hyper TextTransfer Protocol Secure request and communicate the HTTP/HTTPS requestto server. The server may accept the HTTP/HTTPS request and communicateto the contacting user device 1502 (or the user device 1508) one or moreHyper Text Markup Language (HTML) files responsive to the HTTP/HTTPSrequest. The contacting user device 1502 and/or user device 1508 mayrender a webpage based on the HTML files from the server forpresentation to the user. This disclosure contemplates any suitablewebpage files. As an example, and not by way of limitation, webpages mayrender from HTML files, Extensible Hyper Text Markup Language (XHTML)files, or Extensible Markup Language (XML) files, according toparticular needs. Such pages may also execute scripts such as, forexample and without limitation, those written in JAVASCRIPT, JAVA,MICROSOFT SILVERLIGHT, combinations of markup language and scripts suchas AJAX (Asynchronous JAVASCRIPT and XML), and the like. Herein,reference to a webpage encompasses one or more corresponding webpagefiles (which a browser may use to render the webpage) and vice versa,where appropriate.

In particular embodiments, enterprise system 104 may be capable oflinking a variety of entities. As an example, and not by way oflimitation, enterprise system 104 may enable users such as contactingusers and agent users to interact with each other as well as receivecontent from subscriber systems 1506 or other entities (e.g., thedeveloper system 116), or to allow users to interact with these entitiesthrough an application programming interfaces (API) or othercommunication channels.

In particular embodiments, a subscriber system 1506 may include one ormore types of servers, one or more data stores, one or more interfaces,including but not limited to APIs, one or more web services, one or morecontent sources, one or more networks, or any other suitable components,e.g., that servers may communicate with. A subscriber system 1506 may beoperated by a different entity from an entity operating enterprisesystem 104. In particular embodiments, however, enterprise system 104and subscriber systems 1506 may operate in conjunction with each otherto provide communication services to users of enterprise system 104 orsubscriber systems 1506. In this sense, enterprise system 104 mayprovide a platform, or backbone, which other systems, such as subscribersystems 1506, may use to provide communication services andfunctionality to users across the Internet or other network.

In particular embodiments, a subscriber system 1506 may include athird-party service system. A third-party content service system mayinclude one or more sources of products or services that are used bycontacting user. As an example, and not by way of limitation, a servicesystem can include a call center system, a traffic monitoring system, asocial networking system, an emergency reporting system, a home repairsystem, a weather monitoring system, an internet service providersystem, an airline system, a transportation provider system, a newsmedia system, a travel accommodation system, an electronic smartappliance distribution or monitoring system, or a power distribution ormonitoring system.

In particular embodiments, the enterprise system 104 may include avariety of servers, sub-systems, programs, modules, logs, and datastores. In particular embodiments, the enterprise system 104 may includeone or more of the following: a web server, action logger, API-requestserver, notification controller, action log, inference module, searchmodule, advertisement-targeting module, user-interface module,user-profile store, third-party content store, or location store. Theenterprise system 104 may also include suitable components such asnetwork interfaces, security mechanisms, load balancers, failoverservers, management-and-network-operations consoles, other suitablecomponents, or any suitable combination thereof. In particularembodiments, the enterprise system 104 may include one or morecontacting user-profile stores for storing contacting user profiles(e.g., for contacting users). A user profile may include, for example,contacting user information, biographic information, demographicinformation, behavioral information, social information, or other typesof descriptive information, such as work experience, educationalhistory, hobbies or preferences, interests, affinities, or location.

The web server may include a mail server or other messagingfunctionality for receiving and routing messages between enterprisesystem 104 and one or more contacting user devices 1502 or user devices1508. An API-request server may allow a subscriber system 1506 to accessinformation from the enterprise system 104 by calling one or more APIs.An action logger may be used to receive communications from a web serverabout a user's actions on or off enterprise system 104. Information maybe pushed to a contacting user device 1502 and/or user device 1508 asnotifications, or information may be pulled from contacting user device1502 responsive to a request received from contacting user device 1502or user device 1508.

In the foregoing specification, the invention has been described withreference to specific example embodiments thereof. Various embodimentsand aspects of the invention(s) are described with reference to detailsdiscussed herein, and the accompanying drawings illustrate the variousembodiments. The description above and drawings are illustrative of theinvention and are not to be construed as limiting the invention.Numerous specific details are described to provide a thoroughunderstanding of various embodiments of the present invention.

The present invention may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. For example, the methods described herein may beperformed with less or more steps/acts or the steps/acts may beperformed in differing orders. Additionally, the steps/acts describedherein may be repeated or performed in parallel to one another or inparallel to different instances of the same or similar steps/acts. Thescope of the invention is, therefore, indicated by the appended claimsrather than by the foregoing description. All changes that come withinthe meaning and range of equivalency of the claims are to be embracedwithin their scope.

What is claimed is:
 1. A method comprising: receiving login credentialsfrom a user device through a user application by an enterprise system;accepting the login credentials of the user device by the enterprisesystem; receiving a call from a customer by the enterprise system; inresponse to the call, routing the received call to the user device bythe enterprise system; in response to the call, requesting CRM dataassociated with the customer from a developer system by the enterprisesystem; and causing the user application of the user device to displaythe CRM data.
 2. The method of claim 1, wherein the displayed CRM datais provided to the user device directly from the developer system. 3.The method of claim 1, wherein the displayed CRM data is provided to theuser device by the enterprise system.
 4. The method of claim 1, whereinthe user application displays the CRM data without having to login orprovide login credentials to the developer system.
 5. The method ofclaim 1, further comprising: receiving call data associated with thecall by the enterprise system; generating one or more reports based onthe call data by the enterprise system; and providing the generated oneor more reports to the developer system by the enterprise system,wherein the developer system updates the CRM data associated with thecustomer using the one or more reports.
 6. The method of claim 5,wherein the call data is received in response to the call ending.
 7. Themethod of claim 5, wherein the call data comprises one or more of dataobtained about the customer and data associated with handling of thecall.
 8. A system comprising: at least one processor; and at least onenon-transitory computer-readable storage medium storing instructionsthat, when executed by the at least one processor, cause the system to:receive login credentials from a user device through a user application;accept the login credentials of the user device; receive a call from acustomer; in response to the call, route the received call to the userdevice; in response to the call, request CRM data associated with thecustomer from a developer system; and cause the user application of theuser device to display the CRM data.
 9. The system of claim 8, whereinthe displayed CRM data is provided to the user device directly from thedeveloper system.
 10. The system of claim 8, wherein the system is anenterprise system
 11. The system of claim 8, wherein the userapplication displays the CRM data without having to login or providelogin credentials to the developer system.
 12. The system of claim 8,further comprising instructions that, when executed by the at least oneprocessor, cause the system to: receive call data associated with thecall; generate one or more reports based on the call data; and providethe generated one or more reports to the developer system, wherein thedeveloper system updates the CRM data associated with the customer usingthe one or more reports.
 13. The system of claim 12, wherein the calldata is received in response to the call ending.
 14. The system of claim12, wherein the call data comprises one or more of data obtained aboutthe customer and data associated with handling of the call.
 15. Anon-transitory computer-readable medium storing instructions that, whenexecuted by at least one processor, cause a computer system to: receivelogin credentials from a user device through a user application; acceptthe login credentials of the user device; receive a call from acustomer; in response to the call, route the received call to the userdevice; in response to the call, request CRM data associated with thecustomer from a developer system; and cause the user application of theuser device to display the CRM data.
 16. The computer-readable medium ofclaim 15, wherein the displayed CRM data is provided to the user devicedirectly from the developer system.
 17. The computer-readable medium ofclaim 15, wherein the user application displays the CRM data withouthaving to login or provide login credentials to the developer system.18. The computer-readable medium of claim 15, further comprisinginstructions that, when executed by the at least one processor, causethe computer system to: receive call data associated with the call;generate one or more reports based on the call data; and provide thegenerated one or more reports to the developer system, wherein thedeveloper system updates the CRM data associated with the customer usingthe one or more reports.
 19. The computer-readable medium of claim 18,wherein the call data is received in response to the call ending. 20.The computer-readable medium of claim 18, wherein the call datacomprises one or more of data obtained about the customer and dataassociated with handling of the call.